#include<stdio.h>
#include<unistd.h>
#define BUF_SIZE 30
//两个管道进行双向通信
//两个管道可以避免程序流程的预测或控制
int main(int argc,char *argv[])
{
	int fds1[2],fds2[2];
	char str1[]="Who are you?";
	char str2[]="Thank you for your message";
	char buf[BUF_SIZE];
	pid_t pid;
	
	pipe(fds1),pipe(fds2);
	pid=fork();
	if(pid==0)
	{
		//向管道1，子进程写入数据
		write(fds1[1],str1,sizeof(str1));
		//向管道2，子进程读数据
		read(fds2[0],buf,BUF_SIZE);
		printf("Child proc output:%s\n",buf);
	}	
	else
	{
		//父进程读数据
		read(fds1[0],buf,BUF_SIZE);
		printf("Parent proc output:%s\n",buf);
		//子进程写数据
		write(fds2[1],str2,sizeof(str2));
		sleep(3);
	}
	return 0;
}
